package com.ttbj.yitongpay.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
/**
 * 主扫&被扫：属于手机扫码业务的两种方式，是从用户的角度而言
 * @Date 2018年9月10日 上午11:01:18
 */
public interface ScanQRCodeService {
	
	/**
	 * 易通金服：从客户角度上，主扫二维码
	 * @param object 封装参数的object，属性必须跟文档中一样，必传的参数一定要传 
	 * @return Map<String, String> {respCode:200, codeUrl:xxxxx, respMsg: xxxx}
	 */
	public Map<String, String> activeScanQrCode(Object object) throws Exception;
	
	/**
	 * 易通金服：扫码支付后的异步回调处理方法(只有在支付了以后才会起调，不支付不会起调)
	 * @param request 请求
	 * @param object 支付请求应答报文中的参数封装成的bean
	 * @return Map<String, Object>:成功{respCode:0000,merOrderNum:503dd1256a_CS,tranAmt:1..等}，失败{respCode:9999}
	 * @throws Exception
	 */
	public Map<String, Object> activeCallBackFunction(Object object) throws Exception;
	
	/**
	 * 易通金服：主扫和被扫交易查询
	 * @param merOrderNum 商户订单号
	 * @param tranDate 原订单交易日期
	 * @param scanORType 交易类型：1主扫（微信/支付宝），2被扫（微信小程序）
	 * @return Map<String, String>:成功{respCode:0000, bankAmt:1, tranAmt:1..等}，无此订单 {respCode:none}
	 * @throws Exception
	 */
	public Map<String, String> transactionQuery(String merOrderNum, String tranDate, int scanORType) throws Exception;
	
	/**
	 * 易通金服：从客户角度上，被扫二维码（微信小程序也使用）
	 * @param object 封装参数的object，属性必须跟文档中一样，必传的参数：merOrderNum,sysTraceNum,tranAmt,channel等
	 * @return Map<String, String> {respCode:200, codeUrl:xxxxx, respMsg: xxxx}
	 */
	public Map<String, String> passiveScanQrCode(Object object) throws Exception;
	
	/**
	 * 易通金服：被扫支付后的异步回调处理方法(只有在支付了以后才会起调，不支付不会起调)
	 * @param request 请求
	 * @param object 支付请求应答报文中的参数封装成的bean
	 * @return Map<String, Object>:成功{respCode:0000,merOrderNum:503dd1256a_CS,tranAmt:1..等}，失败{respCode:9999}
	 * @throws Exception
	 */
	public Map<String, Object> passiveCallBackFunction(Object object) throws Exception;
	
}
